The present invention relates to an arbitration mechanism for awarding priority to one of a plurality of requesters, in particular, such a mechanism which guarantees a minimum software programmable slice of available bandwidth to each requester.
Where there is a single resource in the data processing system whether that resource be a bus, an SRAM, a FIFO, etc., an arbitrator is required to control access to that resource. In accordance with many arbitration schemes, each requester has an assigned priority. Requesters with the same priority are given access in an equitable or round-robin fashion. Typically, requests with higher priority are given preferred access, preempting requests with lower priority. Additional mechanisms have been developed, that when added on top of such a system, prevent requesters with low priority from being starved from access to the resource.
In accordance with an arbitration method embodiment of the invention, requests for access to a resource are received from a combination of requesters. A priority vector associated with that combination of requesters is referred to in order to identify the requestor to be awarded priority. Requestor identifiers each corresponding to one of the requesters are listed sequentially in the priority vector. The number of requestor identifiers in the vector exceed the number of requesters in the combination. A pointer identifies a next requester identifier on the list. The next requester identifier is selected and the requester corresponding to that requester identifier is awarded priority. The pointer may be incremented sequentially through the list of requester identifiers. Programmability can be made available for the total number of requester identifiers in the priority vector and for the number of requester identifiers corresponding to each requester.
According to a further embodiment of the arbitration method, a plurality of priority vectors are provided, one for each possible combination of multiple requesters that may seek access to the resource. The priority vector is a sequence of requester identifiers, each requester identifier corresponding to one of the requesters. When requests for access are received from the combination of requesters, the priority vector corresponding to the given combination of requesters is used for selection of the next requester identifier. Priority is awarded to the requester corresponding to the next requester identifier.
In accordance with embodiments of an arbitration mechanism of the invention, a selector, responsive to requests for access from the requesters in a given combination of requesters, ascertains a next requester identifier from the sequence of requester identifiers in the priority vector corresponding to the given combination of requesters. Further, a pointer may be included for pointing to one of the requester identifiers in a priority vector. The sequence of requester identifiers may be held in a register.
A data processing system embodiment of the invention includes a resource, a plurality of requesters and an arbiter in communication with the requesters. The arbiter includes a selector responsive to the requests for ascertaining a next requester identifier from an appropriate priority vector and awarding priority to the requester corresponding to a next requester identifier.
Since each requester will have at least one requester identifier in the priority vector used to award priority, even low priority requesters, will be able to gain some minimal access to the resource. The ability to assign a percentage of bandwidth to each requester by adjusting the number of corresponding requester identifiers in priority vectors is an advantage of various embodiments of the invention.